import base64
import pickle
import random
import datetime

class tools():
    # 1. 定义把python对象转成加密字符串的方法sdumps
    # 使用 staticmethod装饰的方法是静态方法
    #        参数和普通函数一样
    #        调用形式为 Secret.dumps(参数)
    @staticmethod
    def sdumps(obj): # 加密
        # 先把 obj 转换成 pickle的二进制数据， 再转换成base64的二进制数据， 再解码成字符串
        return base64.b64encode(pickle.dumps(obj)).decode()

    # 2. 定义把加密字符串还原成python对象的方法sloads
    @staticmethod
    def sloads(obj_str): # 解密
        # 把字符串 obj_str 编码成 base64的二进制数据 再解码成 pickle的二进制数据 再解码成python对象
        return pickle.loads(base64.b64decode(obj_str.encode()))

    # 3. 生成订单的方法
    @staticmethod
    def get_order_id():
        return datetime.datetime.now().strftime('%Y%m%d%H%M%S') +\
               str(random.randint(10000000, 999999999))



if __name__ == '__main__':
    d1 = {'name': 'canglaoshi', 'desc': 'good teacher'}
    d1_str = tools.sdumps(d1)
    print(d1_str)
    d1_new = tools.sloads(d1_str)
    print(d1_new)

